草庐IT

c++ - 可靠的 UDP 实现

全部标签

c - Golang C (.so) 在调用时导入分段违规

您好,我将在Linux环境中使用带有golang的第三方库(.so文件)。所以我试着用一些微不足道的东西来练习一下,比如从linux原生库中导入函数。并卡在导入和调用sqrt函数上。这是我的代码:packagemain//#cgoLDFLAGS:-ldl//#include//#includeimport"C"import"fmt"funcmain(){export_name:="sqrt"lib_path:="/lib/libm.so.6"//Loading.sohandle:=C.dlopen(C.CString(lib_path),C.RTLD_LAZY)ifhandle==ni

c - Go 语言使用 C 的内部结构

我希望能够在Go中将一个主机地址(让我们使用“www.google.be”)转换为sockaddr结构,然后在C代码中使用它。使用http://github.com/jbenet/go-sockaddr将主机地址转换为sockaddr_any结构并不难模块。我的代码有效,如下所示:ipAddr,_:=net.ResolveIPAddr("ip","www.google.be")sockAddr:=sockaddrnet.IPAddrToSockaddr(ipAddr)rawSockaddr,socklen,_:=sockaddr.SockaddrToAny(sockAddr)cStru

CGO 我正在传递一个 C 结构,它带有一个指向 go 函数的值的指针,

我很疑惑下面的场景是否需要清理内存?我有一个C函数,它创建一个C结构并将其传递给Go函数。C结构包含一个值数组(使用指针算法)。Go函数填充此数组并返回。在调用C函数中,我将值从C结构中复制出来并且不存储它们。因为这是在Go中创建的,所以垃圾会被收集吗?/*Ccode*/intgo_func(c_struct*s);structc_struct{val*values;size_t*values_cnt;};voidexample_call(){structc_structs;go_func(&s)copy_values(s)}/*gocode*/funcgo_func(c*C.c_st

go - 如何在 Go 应用程序中可靠地引用静态文件?

我正在编写一个基于模板生成一些文件的Go命令行工具。模板与命令行工具本身的代码一起位于Git存储库中。我想允许以下内容:无论从何处调用二进制文件,都应始终找到模板目录。如果需要,用户可以覆盖模板目录。因为这是一个Go应用程序,所以我使用了类似的东西:templateRoot:=filepath.Join(os.Getenv("GOPATH"),"src/github.com/myuser/myproject/templates",)但作为Go的新手,我想知道这种方法是否足够可靠:是否保证我的应用程序模板始终可以通过该路径访问?如果有人将我的应用程序出售到他们自己的项目中怎么办?这对命令

无法访问cgo中的c变量

我正在尝试访问cgo中的c结构,但是请执行此操作couldnotdeterminekindofnameforC.utmpxutmpx是一个C结构体这是执行代码:/*#include#include#include#include#include*/import"C"typerecordC.utmpxfd,err:=os.Open(C._PATH_UTMPX)//thisworksfd,err:=os.Open(C.UTMPX_FILE)//error在utmpx.h文件中,有#define_PATH_UTMPX"/var/run/utmpx"#defineUTMPX_FILE_PATH

go - 函数值 ('function pointers' ) 在 Go 中究竟是如何实现的?

来自thedocumentationforreflect.Value.Pointer():Ifv'sKindisFunc,thereturnedpointerisanunderlyingcodepointer,butnotnecessarilyenoughtoidentifyasinglefunctionuniquely.TheonlyguaranteeisthattheresultiszeroifandonlyifvisanilfuncValue.很明显,函数值变量必须包含的不仅仅是代码指针。鉴于Go支持方法指针,这不足为奇-但实际的底层实现是什么?(对于使用反射创建的函数值,它有何

c - 求和,数组构造和寻址的简洁二叉树

使用“sum”作为捷径进行任意计算。我有一个通过递归求和值对来从值列表中计算单个和的过程。未配对的值将被不变地提升到树上,直到可以配对为止。在进行了这种计算之后,我正在寻找平衡计算的最佳方法(即访问数组元素/节点所需的操作数)以及一维数组中所有节点的最简洁的编码(即无间隙,零值)(或重复值),并且最好没有额外的索引数组,该数组不能从简洁编码中轻松得出,因此必须将其与数组一起保存。尽管以下是简单的示例,但实际上,初始列表中的值数量可能非常大(2^47或更多)。例如,给定列表[1、2、3、4],该数组是微不足道的:[10、3、7、1、2、3、4],并很好地拆分为易于按节点寻址的行,或作为对

c - "Undefined symbols for architecture x86_64:"用于在 macOS Sierra 上使用 cgo 的库

我正在尝试使用图书馆,https://github.com/go-steem/rpc,它使用了一些引用库的C代码。C库可以在这里找到,https://github.com/bitcoin-core/secp256k1我按照步骤安装了它$./autogen.sh$./configure$make$./tests$sudomakeinstall#optional并有这个输出;$sudomakeinstallPassword:CCsrc/libsecp256k1_la-secp256k1.loCCLDlibsecp256k1.laCCsrc/tests-tests.oCCLDtestsCCs

go - 如何在 hyperledger fabric v0.6 链代码实现中查询一段时间的状态

我在IBM-bluemix中使用HyperledgerfabricV0.6服务,并将我的go语言链代码部署到bluemix文档中提供的对等点。由于我对这个实现很陌生,所以我只能在ChaincodeStubInterface中找到PutState和GetState方法。.但是我的需求是查询一段时间的状态。例如:2017年2月11日10:00:00:创建了Asset12017年2月11日12:00:00:创建了Asset22017年2月12日10:00:00:修改Assets12017年2月13日13:00:00:创建Assets3....2017年2月15日14:00:00:创建Asse

go - Group 没有实现 Data(FooMethod 方法有指针接收器)

这是我的代码:packagemainimport"fmt"typeGroupstruct{}func(g*Group)FooMethod()string{return"foo"}typeDatainterface{FooMethod()string}funcNewJsonResponse(dData)Data{returnd}funcmain(){vargGroupjson:=NewJsonResponse(g)fmt.Println("vim-go")}但没有像我预期的那样工作。$gobuildmain.go#command-line-arguments./main.go:22:ca